# 对象 和 表中的一条数据  如此相似
# 对象  --> 数据:    orm
# object relationship mapping  对象关系映射
# 将 python 中的一个对象  映射成 表中的一条数据
# 换句话说   操作数据  变成了 操作对象

# 三类事物需要映射   1 表  2 数据(行 字段) 3 关系映射
# orm 框架

# name id

from sqlalchemy import String, Column, create_engine,ForeignKey
# from mysql_config import *
from sqlalchemy.orm import sessionmaker # 连接
from sqlalchemy.ext.declarative import declarative_base  # 表映射
from sqlalchemy.orm import relationship,backref

# engine = create_engine('mysql+pymysql://root:%s@localhost:3306/pythonclass'.format(pwd))

# 映射  declarative_base  基本的声明

# 连接
# 通过谁去连接  引擎  create_engine
# 连接好之后的连接  sessionmaker

# 通过连接进行操作
# 断开连接

#  映射
Base = declarative_base()


class People(Base):
    __tablename__ = 'people'
    id = Column(String(10), primary_key=True)
    name = Column(String(10))

class Pet(Base):
    __tablename__ = 'pet'
    pet_id = Column(String(10),primary_key=True)
    pet_name = Column(String(10))
    people_id = Column(String(10),ForeignKey('people.id'))
    p1 = relationship('People')


# 连接   哪种数据库 + 数据库驱动://用户:密码@主机:端口号/数据库名
engine = create_engine('mysql+pymysql://root:22267721mq@localhost:3306/pythonclass')

# 删表
# Base.metadata.drop_all(engine)
#建表
# Base.metadata.create_all(engine)



DBsession = sessionmaker(bind=engine)
#
# # 获取一个连接对象  操作数据库就靠它了
# # 和数据库通信
dbsession = DBsession()
# #
# p1 = People(id='1', name='andy')
# p2 = People(id='2', name='Tom')
# p3 = People(id='3', name='Jerry')
# dbsession.add_all([p1,p2,p3])

p4 = Pet(pet_id='1',pet_name='2',people_id='3')
dbsession.add(p4)

# res = dbsession.query(People).filter(People.id=='1').one()
# print(res)
# print(res.name,res.id)
#
# res = dbsession.query(People).all()
#
#
# for i in res:
#     print(i)
#     print(i.name,i.id)
#
#
dbsession.commit()
dbsession.close()
